\section{Introducción}
	La arquitectura de Predesys se basa en la clásica arquitectura Cliente-Servidor, en la que aparecen 3 elementos clave: un servidor
	central, uno o más servidores secundarios y uno o más clientes que pueden ser activos o pasivos.
	
	\begin{figure}[H]
		\centering
		\includegraphics[width=\textwidth]{../media/introduction.png}
		\caption{Introducción al diseño de Predesys}
	\end{figure}
	
	Tanto el servidor central como los servidores secundarios (llamados Radares) son ordenadores comúnes, pero los clientes son dispositivos móviles
	con conectividad Bluetooth, Ethernet, Wi-Fi, etc.\\
	
	El sistema detecta dispositivos inalámbricos (o de otros tipos) por medio de los Radares y ejecuta ciertos servicios automáticos cuando se 
	detectan dichos dispositivos. Todos los servicios se definen por medio de plugins instalados en el Servidor. También existen servicios
	no automáticos que se ejecutan cuando algún usuario lo solicite en un momento determinado, lo cual trataremos más adelante.\\
	
	La distancia entre los Radares y los Clientes es limitada, según la tecnología concreta de cada Radar, y la distancia entre los Radares y
	el Servidor puede ser cualquiera, ya que tan sólo deben estar conectados entre sí por medio de una conexión TCP/IP.
	
	\subsection*{Sistemas distribuidos}	
		Según Wikipedia\cite{distributed-systems}, un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre 
		sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema (no 
		necesita saber qué cosas están en qué máquinas). El usuario accede a los recursos remotos (RPC) de la misma manera en que accede a recursos locales, o 
		un grupo de computadores que usan un software para conseguir un objetivo en común.\\

		Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone otro componente debe de ser capaz de 
		reemplazarlo, esto se denomina Tolerancia a Fallos.\\

		El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (red de área local), centenas de hosts (red de área 
		metropolitana), y miles o millones de hosts (Internet); esto se denomina escalabilidad.\\
	
		La computación distribuida ha sido diseñada para resolver problemas demasiado grandes para cualquier supercomputadora y mainframe, mientras se 
		mantiene la flexibilidad de trabajar en múltiples problemas más pequeños. Por lo tanto, la computación en grid es naturalmente un entorno 
		multiusuario; por ello, las técnicas de autorización segura son esenciales antes de permitir que los recursos informáticos sean controlados por 
		usuarios remotos.
		
		\begin{figure}[H]
			\centering
			\includegraphics[width=300px]{../media/distributedsystem.png}
			\caption{Ejemplo de sistema distribuido\cite{distributed-system-example}}
		\end{figure}
		
	\subsection*{Arquitectura Cliente-Servidor}
		Según Wikipedia\cite{client-server}, la arquitectura Cliente-Servidor consiste básicamente en un cliente que realiza peticiones a otro programa (el 
		servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema 
		operativo multiusuario distribuido a través de una red de computadoras.\\

		En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo 
		organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño 
		del sistema.\\

		La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es 
		necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del 
		correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.\\

		Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por 
		diferentes computadoras aumentando así el grado de distribución del sistema.\\

		La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.\\
		
		La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los 
		diversos recursos y aplicaciones con que se cuenta y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que 
		todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que 
		tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el 
		contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.
